﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LI4
{
    public partial class NovoAnuncio : Form
    {
        public string antUsername;

        public NovoAnuncio()
        {
            InitializeComponent();
        }

        private void NovoAnuncio_Load(object sender, EventArgs e)
        {
            foreach (Business.Distrito dist in Program.distritos)
                distritoCB.Items.Add(dist);

            distritoCB.SelectedIndex = 0;

            Business.Distrito distr = (Business.Distrito)distritoCB.SelectedItem;

            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.Nome.Equals(distr.Nome)) localidadeCB.Items.Add(local);
            }
            if (localidadeCB.Items.Count > 0) localidadeCB.SelectedIndex = 0;

            
            foreach (Business.Area area in Program.areas)
                areaCB.Items.Add(area);

            areaCB.SelectedIndex = 0;
        }

        private void distritoCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            string distrito = distritoCB.Text.Trim();

            localidadeCB.Text = "";
            localidadeCB.Items.Clear();

            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.Nome.Equals(distrito)) localidadeCB.Items.Add(local);
            }

            if (localidadeCB.Items.Count > 0) localidadeCB.SelectedIndex = 0;
        }

        private void criarB_Click(object sender, EventArgs e)
        {
            Business.Area area = (Business.Area)areaCB.SelectedItem;
            Business.Localidade local = (Business.Localidade)localidadeCB.SelectedItem;
            string descricao = descricaoTB.Text.Trim();
            string morada = moradaTB.Text.Trim();
            string latitude = "0";
            string longitude = "0";
            string cod_postal = cp1TB.Text.Trim();
            cod_postal = String.Concat(cod_postal, cp2TB.Text.Trim());

            try
            {
                mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
                mshtml.HTMLInputElement result = (mshtml.HTMLInputElement)doc.all.item("click_lat", 0);
                mshtml.HTMLInputElement result1 = (mshtml.HTMLInputElement)doc.all.item("click_long", 0);
                latitude = result.value.ToString();
                longitude = result1.value.ToString();
            }
            catch
            {
                MessageBox.Show(this, "Ocorreu um erro a ler as coordenadas do mapa!\nPor favor tente novamente!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            if (descricao.Length < 1) MessageBox.Show(this, "Campo Descricao inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else if (morada.Length < 1) MessageBox.Show(this, "Campo Email inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else if (local.Nome.Length < 1) MessageBox.Show(this, "Campo Nome inválido!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else
            {
                Business.Anuncio anuncio = new LI4.Business.Anuncio(0, area, antUsername, descricao, morada, local,cod_postal, latitude, longitude);
                int success = Business.GerirAnuncios.inserir(anuncio);
                if (success == Data.Ligacao.DBERROR)
                    MessageBox.Show(this, "Ocorreu um erro!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else
                {
                    MessageBox.Show(this, "Anuncio inserido no sistema!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.Dispose();
                }
            }

        }

        private void procurarB_Click(object sender, EventArgs e)
        {
            string user = utilizadorTB.Text;
            antUsername = user;
            string nome;
            string email;
            string telefone;
            string morada;
            Business.Distrito distrito;
            Business.Localidade localid;
            string cod_postal;
            


            Data.Candidato candData = new LI4.Data.Candidato();
            Data.Empresa empData = new LI4.Data.Empresa();
            
            
            int tipo;

            if (candData.exiteCandidato(user))
            {
                tipo = Business.Login.CANDIDATO;
            }
            else
            {
                if (empData.existeEmpresa(user)) tipo = Business.Login.EMPRESA;
                else tipo = 0;
            }
            if (tipo != 0)
            {
                nomeTB.Enabled = false;
                telefoneTB.Enabled = false;
                emailTB.Enabled = false;
                tabControl1.Enabled = true;
                if (tipo == Business.Login.CANDIDATO)
                {
                    Business.Candidato cand = new LI4.Business.Candidato(candData.getCandidato(user));
                    nome = cand.Nome;
                    email = cand.Mail;
                    telefone = cand.Telefone.ToString();
                    distrito = cand.Localidade.Distrito;
                    localid = cand.Localidade;
                    morada = cand.Rua;
                    cod_postal = cand.CodPostal;
                }
                else
                {
                    Business.Empresa  empr = new LI4.Business.Empresa(empData.getEmpresa(user));
                    nome = empr.Nome;
                    email = empr.Mail;
                    telefone = empr.Telefone.ToString();
                    distrito = empr.Localidade.Distrito;
                    localid = empr.Localidade;
                    morada = empr.Rua;
                    cod_postal = empr.CodPostal;
                }

                nomeTB.Text = nome;
                emailTB.Text = email;
                telefoneTB.Text = telefone;
                
                int l = 0, d = 0, ll = 0, dd = 0;

                foreach (Business.Distrito dist in Program.distritos)
                {
                    distritoCB.Items.Add(dist);

                    if (dist.Nome.Equals(distrito.Nome)) dd = d;

                    d++;
                }
                distritoCB.SelectedIndex = dd;


                foreach (Business.Localidade local in Program.localidades)
                {
                    if (local.Distrito.Nome.Equals(localid.Distrito.Nome))
                    {
                        localidadeCB.Items.Add(local);
                        l++;
                    }
                    if (local.Nome.Equals(localid.Nome)) ll = l-1;
                    
                }
                localidadeCB.SelectedIndex = ll;

                moradaTB.Text = morada;

                cp1TB.Text = cod_postal.Substring(0, 4);
                cp2TB.Text = cod_postal.Substring(3, 3);

                
            }
            else
            {
                MessageBox.Show(this, "Username nao existe!", "Erro.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

        }

        private void NovoAnuncio_Shown(object sender, EventArgs e)
        {
            utilizadorTB.Focus();
        }

        /*private void tab3GotFocus(object sender, EventArgs e)
        {
            object empty = System.Reflection.Missing.Value;
            axWebBrowser1.Navigate(@"C:/Documents and Settings/fernando/My Documents/Visual Studio 2008/Projects/Li4SVN/Google Maps/novo.html");

            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
            
        }*/

        private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
        {
            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
            mshtml.HTMLInputElement result = (mshtml.HTMLInputElement)doc.all.item("address", 0);

            result.value = moradaTB.Text.Trim() + ", " + localidadeCB.Text;
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            object empty = System.Reflection.Missing.Value;
            axWebBrowser1.Navigate(@"C:/Documents and Settings/fernando/My Documents/Visual Studio 2008/Projects/Li4SVN/Google Maps/novo.html");

            mshtml.IHTMLDocument2 doc = axWebBrowser1.Document as mshtml.IHTMLDocument2;
        }


        
    }
}
